/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package co.uniminuto.edu.gimnasioInteligente.beans;

import co.uniminuto.edu.gimnasioInteligente.entities.AsociacionMaquinaUsuario;
import co.uniminuto.edu.gimnasioInteligente.entities.Maquina;
import co.uniminuto.edu.gimnasioInteligente.entities.Usuario;
import co.uniminuto.edu.gimnasioInteligente.session.AsociacionMaquinaUsuarioFacade;
import co.uniminuto.edu.gimnasioInteligente.session.MaquinaFacade;
import co.uniminuto.edu.gimnasioInteligente.session.UsuarioFacade;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.model.SelectItem;

/**
 *
 * @author diegoalejandro
 */
@ManagedBean(name = "asignacionMaquinaUsuarioBean")
public class AsignacionMaquinaUsuarioBean {
    
    @EJB
    UsuarioFacade myUsuarioSession;
    @EJB
    MaquinaFacade myMaquinaSession;
    @EJB
    AsociacionMaquinaUsuarioFacade myAsociacionMaquinaUsuarioSession;
    private Integer usuarioId;
    private Integer maquinaId;
    private Date inicioMaquina;
    private Date finalMaquina;
    private List<Usuario> usuariosList;
    private List<SelectItem> usuariosSelectItem;
    private List<Maquina> maquinasList;
    private List<SelectItem> maquinasSelectItem;
    private String mensajeConfirmacion;

    /**
     * Creates a new instance of AsignacionMaquinaUsuarioBean
     */
    public AsignacionMaquinaUsuarioBean() {
    }
    
    public List<Usuario> getUsuariosList() {
        usuariosList = new ArrayList<>();
        usuariosList = myUsuarioSession.findAll();
        return usuariosList;
    }
    
    public void setUsuariosList(List<Usuario> usuariosList) {
        this.usuariosList = usuariosList;
    }
    
    public List<SelectItem> getUsuariosSelectItem() {
        usuariosSelectItem = new ArrayList<>();
        for (Usuario usuario : getUsuariosList()) {
            usuariosSelectItem.add(new SelectItem(usuario.getIdUsuario(),
                    usuario.getNombres() + " " + usuario.getApellidos()));
        }
        return usuariosSelectItem;
    }
    
    public void setUsuariosSelectItem(List<SelectItem> usuariosSelectItem) {
        this.usuariosSelectItem = usuariosSelectItem;
    }
    
    public Integer getUsuarioId() {
        return usuarioId;
    }
    
    public void setUsuarioId(Integer usuarioId) {
        this.usuarioId = usuarioId;
    }
    
    public List<Maquina> getMaquinasList() {
        maquinasList = new ArrayList<>();
        maquinasList = myMaquinaSession.findAll();
        return maquinasList;
    }
    
    public void setMaquinasList(List<Maquina> maquinasList) {
        this.maquinasList = maquinasList;
    }
    
    public List<SelectItem> getMaquinasSelectItem() {
        maquinasSelectItem = new ArrayList<>();
        for (Maquina maquina : getMaquinasList()) {
            maquinasSelectItem.add(new SelectItem(maquina.getIdMaquina(), maquina.getNombre()));
        }
        return maquinasSelectItem;
    }
    
    public void setMaquinasSelectItem(List<SelectItem> maquinasSelectItem) {
        this.maquinasSelectItem = maquinasSelectItem;
    }
    
    public Integer getMaquinaId() {
        return maquinaId;
    }
    
    public void setMaquinaId(Integer maquinaId) {
        this.maquinaId = maquinaId;
    }
    
    public void submit() {
        //Crea un nuevo objeto de tipo Asociación Usuario y lo persiste.
        AsociacionMaquinaUsuario asignacionMaquinaUsuario = new AsociacionMaquinaUsuario();
        Usuario usuario = null;
        usuario = myUsuarioSession.find(getUsuarioId());
        Maquina maquina = null;
        maquina = myMaquinaSession.find(getMaquinaId());
        asignacionMaquinaUsuario.setAsociacionMauinaUsuarioId(myAsociacionMaquinaUsuarioSession.count()+1);
        asignacionMaquinaUsuario.setUsuarioId(usuario);
        asignacionMaquinaUsuario.setMaquinaId(maquina);
        asignacionMaquinaUsuario.setInicio(inicioMaquina);
        asignacionMaquinaUsuario.setFinal1(finalMaquina);
        setMensajeConfirmacion("Se ha asignado "
                + usuario.getNombres() + " " + usuario.getApellidos()
                + " a la máquina: " + maquina.getNombre() + "  con Éxito!");
        try {
            myAsociacionMaquinaUsuarioSession.create(asignacionMaquinaUsuario);
        } catch (Exception e) {
            setMensajeConfirmacion("Hubo un problema al Asignar" + e.getMessage());
        }
    }
    
    public Date getInicioMaquina() {
        return inicioMaquina;
    }
    
    public void setInicioMaquina(Date inicioMaquina) {
        this.inicioMaquina = inicioMaquina;
    }
    
    public Date getFinalMaquina() {
        return finalMaquina;
    }
    
    public void setFinalMaquina(Date finalMaquina) {
        this.finalMaquina = finalMaquina;
    }
    
    public String getMensajeConfirmacion() {
        return mensajeConfirmacion;
    }
    
    public void setMensajeConfirmacion(String mensajeConfirmacion) {
        this.mensajeConfirmacion = mensajeConfirmacion;
    }
}
